Improving the Performance of Conservative Generational Garbage Collection
نویسندگان
چکیده
As object oriented features are added to programming languages such as C demands upon dynamic memory allocation systems increase Prototyping languages such as Smalltalk and LISP have long rec ognized the impact of garbage collection on improving reliability and programmer productivity but providing garbage collection in C is hard because pointers are di cult to reliably identify Conser vative generational collectors provide a partial solution to this problem at the cost of increased memory consumption due to memory fragmentation and tenured garbage This research introduces a new conservative generational garbage collection mechanism the Dynamic Threatening Boundary DTB that unlike previous collectors uses a dynamically updated threatening boundary to select objects eligible for reclamation By using object lifetime demographics to adjust the threatening boundary between generations backward during run time one policy using the DTB mechanism signi cantly reduced tenured garbage Because this mechanism clearly separates generation selection policy from implementation future researchers can easily develop other new policies that may reduce costs further Existing implementations of generational collectors for C often use an expensive virtual memory write trap to maintain pointers into the scavenged generation This research investigates the costs and bene ts of using an explicit store check instruction sequence to reduce the time overhead of the write barrier for generational collectors for C To further reduce memory fragmentation and time overhead this research also shows new ways to predict short lived objects and recognize long lived ones The e ectiveness of these techniques is evaluated by using trace driven simulation to compare them against several existing generational collection policies Although program behavior strongly in uences the costs of garbage collection relevant C program behaviors have not been measured and reported before Several well known C programs were instrumented and the results analyzed to provide data for future researchers incorporating garbage collection into languages that currently do not provide it
منابع مشابه
Improving the Performance of Conservative Generational Garbage Collection ; CU-CS-784-95
As object oriented features are added to programming languages such as C demands upon dynamic memory allocation systems increase Prototyping languages such as Smalltalk and LISP have long rec ognized the impact of garbage collection on improving reliability and programmer productivity but providing garbage collection in C is hard because pointers are di cult to reliably identify Conser vative g...
متن کاملAge-Oriented Garbage Collection
Generational collectors are well known as a tool for shortening pause times incurred by garbage collection and for improving garbage collection efficiency. In this paper, we investigate how to best use generations with on-the-fly collectors. On-the-fly collectors run concurrently with the program threads and induce very short program pauses. Thus, the motivation for incorporating generations is...
متن کاملA Cache-Pinning Strategy for Improving Generational Garbage Collection
In generational garbage collection, the youngest generation of the heap is frequently traversed during garbage collection. Due to randomness of the traversal, memory access patterns are unpredictable and cache performance becomes crucial to garbage-collection efficiency. Our proposal to improve cache performance of garbage collection is to “pin” the youngest generation (sometimes called the nur...
متن کاملAge-Oriented Concurrent Garbage Collection
Generational collectors are well known as a tool for shortening pause times incurred by garbage collection and for improving garbage collection efficiency. In this paper, we investigate how to best use generations with on-the-fly collectors. On-the-fly collectors run concurrently with the program threads and induce very short program pauses. Thus, the motivation for incorporating generations is...
متن کاملGenerational Garbage Collection without Temporary Space Leaks for Lazy Functional Languages
Generational garbage collection is an established method for creating eecient garbage collectors. Even a simple implementation where all nodes that survive one garbage collection are tenured, i.e., moved to an old generation , works well in strict languages. In lazy languages, however, such an implementation can create severe temporary space leaks. The temporary space leaks appear in programs t...
متن کامل